package com.flyqiu.flow.api.service.ru;


import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import com.flyqiu.flow.model.entity.ru.ProcRuVariable;

import java.util.List;
import java.util.Map;

public interface FlowRuVariableService extends IService<ProcRuVariable> {
    /**
     * 获取流程实例变量
     *
     * @param procInstId
     * @return
     */
    List<ProcRuVariable> getProcVariables(String procInstId);

    Map<String, ProcRuVariable> getProcVarablesMap(String procInstId);

    /**
     * 获取活动实例变量
     *
     * @param procInstId
     * @param actId
     * @return
     */
    List<ProcRuVariable> getProcActVariables(String procInstId, String actId);

    Map<String, ProcRuVariable> getProcActVarablesMap(String procInstId, String actId);


    /**
     * 添加流程变量
     *
     * @param procInstId
     * @param varMap
     */
    void addProcVariables(String procInstId, JSONObject varMap);

    /**
     * 添加流程活动变量
     *
     * @param procInstId
     * @param actId
     * @param varMap
     */
    void addActVariables(String procInstId, String actId, JSONObject varMap);


    /**
     * 删除变量
     *
     * @param procInstId 流程实例id
     * @param actId  活动实例id
     * @param varNames   变量名称
     */
    void delVariable(String procInstId, String actId, String... varNames);

    /**
     * 删除流程变量
     *
     * @param procInstId
     */
    void delVarByProcInstId(String procInstId);

    /**
     * 删除流程活动变量
     *
     * @param procInstId
     * @param actId
     */
    void delVarByActInstId(String procInstId, String actId);
}
